#C 语言标准库头文件 inttypes.h
这个头文件提供 整数格式转换 的相关功能,例如整数和字符串之间的转换。
#类型
类型 | 标准 | 说明 |
---|---|---|
imaxdiv_t | C99 | 保存除法的结果 |
#函数
函数 | 标准 | 说明 |
---|---|---|
imaxabs | C99 | 计算整数的绝对值 |
imaxdiv | C99 | 计算整数除法,返回商和余数 |
strtoimax | C99 | 字符串转 intmax_t |
strtoumax | C99 | 字符串转 uintmax_t |
wcstrtoimax | C99 | 宽字符串转 intmax_t |
wcstrtoumax | C99 | 宽字符串转 uintmax_t |
#宏
printf 格式 | 标准 | 说明 |
---|---|---|
PRId8 | C99 | printf 中用于打印 int8_t 的 d 格式(有符号十进制) |
PRId16 | C99 | printf 中用于打印 int16_t 的 d 格式 |
PRId32 | C99 | printf 中用于打印 int32_t 的 d 格式 |
PRId64 | C99 | printf 中用于打印 int64_t 的 d 格式 |
PRIdPTR | C99 | printf 中用于打印 intptr_t 的 d 格式 |
PRIdMAX | C99 | printf 中用于打印 intmax_t 的 d 格式 |
PRIdFAST8 | C99 | printf 中用于打印 int_fast8_t 的 d 格式 |
PRIdFAST16 | C99 | printf 中用于打印 int_fast16_t 的 d 格式 |
PRIdFAST32 | C99 | printf 中用于打印 int_fast32_t 的 d 格式 |
PRIdFAST64 | C99 | printf 中用于打印 int_fast64_t 的 d 格式 |
PRIdLEAST8 | C99 | printf 中用于打印 int_least8_t 的 d 格式 |
PRIdLEAST16 | C99 | printf 中用于打印 int_least16_t 的 d 格式 |
PRIdLEAST32 | C99 | printf 中用于打印 int_least32_t 的 d 格式 |
PRIdLEAST64 | C99 | printf 中用于打印 int_least64_t 的 d 格式 |
PRIi8 | C99 | printf 中用于打印 int8_t 的 i 格式(有符号十进制) |
PRIi16 | C99 | printf 中用于打印 int16_t 的 i 格式 |
PRIi32 | C99 | printf 中用于打印 int32_t 的 i 格式 |
PRIi64 | C99 | printf 中用于打印 int64_t 的 i 格式 |
PRIiPTR | C99 | printf 中用于打印 intptr_t 的 i 格式 |
PRIiMAX | C99 | printf 中用于打印 intmax_t 的 i 格式 |
PRIiFAST8 | C99 | printf 中用于打印 int_fast8_t 的 i 格式 |
PRIiFAST16 | C99 | printf 中用于打印 int_fast16_t 的 i 格式 |
PRIiFAST32 | C99 | printf 中用于打印 int_fast32_t 的 i 格式 |
PRIiFAST64 | C99 | printf 中用于打印 int_fast64_t 的 i 格式 |
PRIiLEAST8 | C99 | printf 中用于打印 int_least8_t 的 i 格式 |
PRIiLEAST16 | C99 | printf 中用于打印 int_least16_t 的 i 格式 |
PRIiLEAST32 | C99 | printf 中用于打印 int_least32_t 的 i 格式 |
PRIiLEAST64 | C99 | printf 中用于打印 int_least64_t 的 i 格式 |
PRIu8 | C99 | printf 中用于打印 uint8_t 的 u 格式(无符号十进制) |
PRIu16 | C99 | printf 中用于打印 uint16_t 的 u 格式 |
PRIu32 | C99 | printf 中用于打印 uint32_t 的 u 格式 |
PRIu64 | C99 | printf 中用于打印 uint64_t 的 u 格式 |
PRIuPTR | C99 | printf 中用于打印 uintptr_t 的 u 格式 |
PRIuMAX | C99 | printf 中用于打印 uintmax_t 的 u 格式 |
PRIuFAST8 | C99 | printf 中用于打印 uint_fast8_t 的 u 格式 |
PRIuFAST16 | C99 | printf 中用于打印 uint_fast16_t 的 u 格式 |
PRIuFAST32 | C99 | printf 中用于打印 uint_fast32_t 的 u 格式 |
PRIuFAST64 | C99 | printf 中用于打印 uint_fast64_t 的 u 格式 |
PRIuLEAST8 | C99 | printf 中用于打印 uint_least8_t 的 u 格式 |
PRIuLEAST16 | C99 | printf 中用于打印 uint_least16_t 的 u 格式 |
PRIuLEAST32 | C99 | printf 中用于打印 uint_least32_t 的 u 格式 |
PRIuLEAST64 | C99 | printf 中用于打印 uint_least64_t 的 u 格式 |
PRIo8 | C99 | printf 中用于打印 uint8_t 的 o 格式(有符号八进制) |
PRIo16 | C99 | printf 中用于打印 uint16_t 的 o 格式 |
PRIo32 | C99 | printf 中用于打印 uint32_t 的 o 格式 |
PRIo64 | C99 | printf 中用于打印 uint64_t 的 o 格式 |
PRIoPTR | C99 | printf 中用于打印 uintptr_t 的 o 格式 |
PRIoMAX | C99 | printf 中用于打印 uintmax_t 的 o 格式 |
PRIoFAST8 | C99 | printf 中用于打印 uint_fast8_t 的 o 格式 |
PRIoFAST16 | C99 | printf 中用于打印 uint_fast16_t 的 o 格式 |
PRIoFAST32 | C99 | printf 中用于打印 uint_fast32_t 的 o 格式 |
PRIoFAST64 | C99 | printf 中用于打印 uint_fast64_t 的 o 格式 |
PRIoLEAST8 | C99 | printf 中用于打印 uint_least8_t 的 o 格式 |
PRIoLEAST16 | C99 | printf 中用于打印 uint_least16_t 的 o 格式 |
PRIoLEAST32 | C99 | printf 中用于打印 uint_least32_t 的 o 格式 |
PRIoLEAST64 | C99 | printf 中用于打印 uint_least64_t 的 o 格式 |
PRIx8 | C99 | printf 中用于打印 uint8_t 的 x 格式(有符号十六进制,小写) |
PRIx16 | C99 | printf 中用于打印 uint16_t 的 x 格式 |
PRIx32 | C99 | printf 中用于打印 uint32_t 的 x 格式 |
PRIx64 | C99 | printf 中用于打印 uint64_t 的 x 格式 |
PRIxPTR | C99 | printf 中用于打印 uintptr_t 的 x 格式 |
PRIxMAX | C99 | printf 中用于打印 uintmax_t 的 x 格式 |
PRIxFAST8 | C99 | printf 中用于打印 uint_fast8_t 的 x 格式 |
PRIxFAST16 | C99 | printf 中用于打印 uint_fast16_t 的 x 格式 |
PRIxFAST32 | C99 | printf 中用于打印 uint_fast32_t 的 x 格式 |
PRIxFAST64 | C99 | printf 中用于打印 uint_fast64_t 的 x 格式 |
PRIxLEAST8 | C99 | printf 中用于打印 uint_least8_t 的 x 格式 |
PRIxLEAST16 | C99 | printf 中用于打印 uint_least16_t 的 x 格式 |
PRIxLEAST32 | C99 | printf 中用于打印 uint_least32_t 的 x 格式 |
PRIxLEAST64 | C99 | printf 中用于打印 uint_least64_t 的 x 格式 |
PRIX8 | C99 | printf 中用于打印 uint8_t 的 X 格式(有符号十六进制,大写) |
PRIX16 | C99 | printf 中用于打印 uint16_t 的 X 格式 |
PRIX32 | C99 | printf 中用于打印 uint32_t 的 X 格式 |
PRIX64 | C99 | printf 中用于打印 uint64_t 的 X 格式 |
PRIXPTR | C99 | printf 中用于打印 uintptr_t 的 X 格式 |
PRIXMAX | C99 | printf 中用于打印 uintmaX_t 的 X 格式 |
PRIXFAST8 | C99 | printf 中用于打印 uint_fast8_t 的 X 格式 |
PRIXFAST16 | C99 | printf 中用于打印 uint_fast16_t 的 X 格式 |
PRIXFAST32 | C99 | printf 中用于打印 uint_fast32_t 的 X 格式 |
PRIXFAST64 | C99 | printf 中用于打印 uint_fast64_t 的 X 格式 |
PRIXLEAST8 | C99 | printf 中用于打印 uint_least8_t 的 X 格式 |
PRIXLEAST16 | C99 | printf 中用于打印 uint_least16_t 的 X 格式 |
PRIXLEAST32 | C99 | printf 中用于打印 uint_least32_t 的 X 格式 |
PRIXLEAST64 | C99 | printf 中用于打印 uint_least64_t 的 X 格式 |
scanf 格式 | 标准 | 说明 |
---|---|---|
SCNd8 | C99 | scanf 中用于输入 int8_t 的 d 格式(有符号十进制) |
SCNd16 | C99 | scanf 中用于输入 int16_t 的 d 格式 |
SCNd32 | C99 | scanf 中用于输入 int32_t 的 d 格式 |
SCNd64 | C99 | scanf 中用于输入 int64_t 的 d 格式 |
SCNdPTR | C99 | scanf 中用于输入 intptr_t 的 d 格式 |
SCNdMAX | C99 | scanf 中用于输入 intmax_t 的 d 格式 |
SCNdFAST8 | C99 | scanf 中用于输入 int_fast8_t 的 d 格式 |
SCNdFAST16 | C99 | scanf 中用于输入 int_fast16_t 的 d 格式 |
SCNdFAST32 | C99 | scanf 中用于输入 int_fast32_t 的 d 格式 |
SCNdFAST64 | C99 | scanf 中用于输入 int_fast64_t 的 d 格式 |
SCNdLEAST8 | C99 | scanf 中用于输入 int_least8_t 的 d 格式 |
SCNdLEAST16 | C99 | scanf 中用于输入 int_least16_t 的 d 格式 |
SCNdLEAST32 | C99 | scanf 中用于输入 int_least32_t 的 d 格式 |
SCNdLEAST64 | C99 | scanf 中用于输入 int_least64_t 的 d 格式 |
SCNi8 | C99 | scanf 中用于输入 int8_t 的 i 格式(有符号十进制) |
SCNi16 | C99 | scanf 中用于输入 int16_t 的 i 格式 |
SCNi32 | C99 | scanf 中用于输入 int32_t 的 i 格式 |
SCNi64 | C99 | scanf 中用于输入 int64_t 的 i 格式 |
SCNiPTR | C99 | scanf 中用于输入 intptr_t 的 i 格式 |
SCNiMAX | C99 | scanf 中用于输入 intmax_t 的 i 格式 |
SCNiFAST8 | C99 | scanf 中用于输入 int_fast8_t 的 i 格式 |
SCNiFAST16 | C99 | scanf 中用于输入 int_fast16_t 的 i 格式 |
SCNiFAST32 | C99 | scanf 中用于输入 int_fast32_t 的 i 格式 |
SCNiFAST64 | C99 | scanf 中用于输入 int_fast64_t 的 i 格式 |
SCNiLEAST8 | C99 | scanf 中用于输入 int_least8_t 的 i 格式 |
SCNiLEAST16 | C99 | scanf 中用于输入 int_least16_t 的 i 格式 |
SCNiLEAST32 | C99 | scanf 中用于输入 int_least32_t 的 i 格式 |
SCNiLEAST64 | C99 | scanf 中用于输入 int_least64_t 的 i 格式 |
SCNu8 | C99 | scanf 中用于输入 uint8_t 的 u 格式(无符号十进制) |
SCNu16 | C99 | scanf 中用于输入 uint16_t 的 u 格式 |
SCNu32 | C99 | scanf 中用于输入 uint32_t 的 u 格式 |
SCNu64 | C99 | scanf 中用于输入 uint64_t 的 u 格式 |
SCNuPTR | C99 | scanf 中用于输入 uintptr_t 的 u 格式 |
SCNuMAX | C99 | scanf 中用于输入 uintmax_t 的 u 格式 |
SCNuFAST8 | C99 | scanf 中用于输入 uint_fast8_t 的 u 格式 |
SCNuFAST16 | C99 | scanf 中用于输入 uint_fast16_t 的 u 格式 |
SCNuFAST32 | C99 | scanf 中用于输入 uint_fast32_t 的 u 格式 |
SCNuFAST64 | C99 | scanf 中用于输入 uint_fast64_t 的 u 格式 |
SCNuLEAST8 | C99 | scanf 中用于输入 uint_least8_t 的 u 格式 |
SCNuLEAST16 | C99 | scanf 中用于输入 uint_least16_t 的 u 格式 |
SCNuLEAST32 | C99 | scanf 中用于输入 uint_least32_t 的 u 格式 |
SCNuLEAST64 | C99 | scanf 中用于输入 uint_least64_t 的 u 格式 |
SCNo8 | C99 | scanf 中用于输入 uint8_t 的 o 格式(有符号八进制) |
SCNo16 | C99 | scanf 中用于输入 uint16_t 的 o 格式 |
SCNo32 | C99 | scanf 中用于输入 uint32_t 的 o 格式 |
SCNo64 | C99 | scanf 中用于输入 uint64_t 的 o 格式 |
SCNoPTR | C99 | scanf 中用于输入 uintptr_t 的 o 格式 |
SCNoMAX | C99 | scanf 中用于输入 uintmax_t 的 o 格式 |
SCNoFAST8 | C99 | scanf 中用于输入 uint_fast8_t 的 o 格式 |
SCNoFAST16 | C99 | scanf 中用于输入 uint_fast16_t 的 o 格式 |
SCNoFAST32 | C99 | scanf 中用于输入 uint_fast32_t 的 o 格式 |
SCNoFAST64 | C99 | scanf 中用于输入 uint_fast64_t 的 o 格式 |
SCNoLEAST8 | C99 | scanf 中用于输入 uint_least8_t 的 o 格式 |
SCNoLEAST16 | C99 | scanf 中用于输入 uint_least16_t 的 o 格式 |
SCNoLEAST32 | C99 | scanf 中用于输入 uint_least32_t 的 o 格式 |
SCNoLEAST64 | C99 | scanf 中用于输入 uint_least64_t 的 o 格式 |
SCNx8 | C99 | scanf 中用于输入 uint8_t 的 x 格式(有符号十六进制,小写) |
SCNx16 | C99 | scanf 中用于输入 uint16_t 的 x 格式 |
SCNx32 | C99 | scanf 中用于输入 uint32_t 的 x 格式 |
SCNx64 | C99 | scanf 中用于输入 uint64_t 的 x 格式 |
SCNxPTR | C99 | scanf 中用于输入 uintptr_t 的 x 格式 |
SCNxMAX | C99 | scanf 中用于输入 uintmax_t 的 x 格式 |
SCNxFAST8 | C99 | scanf 中用于输入 uint_fast8_t 的 x 格式 |
SCNxFAST16 | C99 | scanf 中用于输入 uint_fast16_t 的 x 格式 |
SCNxFAST32 | C99 | scanf 中用于输入 uint_fast32_t 的 x 格式 |
SCNxFAST64 | C99 | scanf 中用于输入 uint_fast64_t 的 x 格式 |
SCNxLEAST8 | C99 | scanf 中用于输入 uint_least8_t 的 x 格式 |
SCNxLEAST16 | C99 | scanf 中用于输入 uint_least16_t 的 x 格式 |
SCNxLEAST32 | C99 | scanf 中用于输入 uint_least32_t 的 x 格式 |
SCNxLEAST64 | C99 | scanf 中用于输入 uint_least64_t 的 x 格式 |
#推荐阅读
#示例
#include <stdio.h>
#include <inttypes.h> // 提供 strtoimax 和 intmax_t
#include <errno.h> // 用于错误检查
int main(void) {
const char *str = "123456789012345";
char *endptr;
int base = 10; // 十进制
// 重置 errno 以检测错误
errno = 0;
// 调用 strtoimax
intmax_t num = strtoimax(str, &endptr, base);
// 检查转换是否成功
if (errno == ERANGE) {
printf("数值超出 intmax_t 范围!\n");
} else if (endptr == str) {
printf("未解析到任何数字!\n");
} else {
printf("转换结果: %" PRIdMAX "\n", num); // PRIdMAX 是 intmax_t 的格式化宏
}
return 0;
}
运行结果:
转换结果: 123456789012345